function rmchars(s::String)
    return s |> x -> replace(x, "\t" => " ") |> x -> replace(x, "\n" => "") |> x -> replace(x, r"--+" => "") |> x -> replace(x, "end" => "") |> x -> replace(x, "?" => "")
end
function parseini(s::Array{String,1})
    d = Dict()
    global i, key, value
    i = 1;
    key = "";
    value = [];
    while i <= length(s)
        l = s[i] |> rmchars |> x -> strip(x, ' ') |> x -> x.string
        tl = split(l, ' ', keepempty = false)
        if first(l, 1) == "\$"
            if !isempty(key)
                d[key] = value
            end
            key = tl[1][2:end]
            if length(tl) < 2
                value = []
            else
                value = tl[2:end]
            end
        else
            value = [value; tl]
        end
        i += 1
    end
    d[key] = value
    return d
end